%% Copyright (C) 2012 Estela Moura
%% 
%% This program is free software; you can redistribute it and/or modify
%% it under the terms of the GNU General Public License as published by
%% the Free Software Foundation; either version 3 of the License, or
%% (at your option) any later version.
%% 
%% This program is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%% GNU General Public License for more details.
%% 
%% You should have received a copy of the GNU General Public License
%% along with Octave; see the file COPYING.  If not, see
%% <http://www.gnu.org/licenses/>.

%% desenha_caminho(cidades, MelhorSolucao)
%% Mostra graficamente o caminho encontrado.
%% MelhorSolucao é uma variável que contém: um vetor caminho é um vetor
%% linha contendo a sequência de cidades que descreve a solução, e um
%% escalar que comprimento, que é quanto mede o caminho.
%% cidades é uma matriz Nx3, em que N é o número
%% de cidades, e as colunas representam índices das cidades, coordena-
%% da x e coordenada y, respectivamente.

%% Author: Estela Moura <estela@kubuntu-Inspiron>
%% Created: 2012-06-14

function desenha_caminho(cidades, MelhorSolucao, numeroIteracoes, execucao)

%Pegando coordenadas para desenhar o caminho
  NaoEncontradas=cidades;

  for(i=1:size(NaoEncontradas,1))
    for(j=1:(size(NaoEncontradas,1)))
      if(MelhorSolucao.caminho(i)==NaoEncontradas(j,1))
	Coordenadas(1:2,i)=NaoEncontradas(j,2:3);
	NaoEncontradas(j,:)=[];	%elimina a linha que já foi encontrada
	break;
      end
    end
  end
  
%Desenhando caminho.
  figure(1);
  clf;
  set(figure(1), 'visible', 'off');
  titulo=sprintf("Melhor caminho encontrado com comprimento=%d (%d iter.).", MelhorSolucao.comprimento, numeroIteracoes);
  title(titulo, 'fontname', 'FreeSerif');
  hold on;
  grid on;
  xlabel ("x", 'fontname', 'FreeSerif');
  ylabel ("y", 'fontname', 'FreeSerif');
  for(i=2:size(Coordenadas,2))
    line([Coordenadas(1,i-1) Coordenadas(1,i)], [Coordenadas(2,i-1) Coordenadas(2,i)], "color", "b", 'linewidth', 2);
  end
    line([Coordenadas(1,i) Coordenadas(1,1)], [Coordenadas(2,i) Coordenadas(2,1)], "color", "b", 'linewidth', 2);
  plot(cidades(:,2), cidades(:,3), "r.", "markersize", 15);
  set(gca, 'fontname', 'FreeSerif');
  filename = sprintf("img_2OPTcruz/v1_ACO_TSP_2OPT-qtdCid%d-ex%d-comp%d-numIter%d.png", length(cidades), execucao, MelhorSolucao.comprimento, numeroIteracoes);
  print(filename);
end
